﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net;
using System.Text;
using System.Configuration;
using FastDATA;

namespace CursoUNICEUB
{
    public partial class InserirTutorial : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["aluno"] == null)
                this.ClientScript.RegisterClientScriptBlock(this.GetType(), "login", "window.location='../Account/Login.aspx?lastpage=InserirTutorial.aspx';", true);

            if (!IsPostBack)
            {
                carregaAssunto();
                carregaTipo();
            }
        }

        void carregaAssunto()
        {
            try
            {
                List<DEAssunto> assuntos = null;
                using (DCCursoDataContext banco = new DCCursoDataContext())
                {
                    var q = from e in banco.DEAssuntos
                            select e;

                    assuntos = q.ToList();
                }

                this.ddlAssunto.DataSource = assuntos;
                this.ddlAssunto.DataBind();
            }
            catch (Exception)
            {
                Util.showMessage(this, "Erro ao carregar os assuntos. Tente mais tarde ou ligue para 8592-4439");
            }
        }

        void carregaTipo()
        {
            try
            {
                List<DETipoTutorial> tipos = null;
                using (DCCursoDataContext banco = new DCCursoDataContext())
                {
                    var q = from e in banco.DETipoTutorials
                            select e;

                    tipos = q.ToList();
                }

                this.ddlTipo.DataSource = tipos;
                this.ddlTipo.DataBind();
            }
            catch (Exception)
            {
                Util.showMessage(this, "Erro ao carregar os tipos. Tente mais tarde ou ligue para 8592-4439"); 
            }
        }

        protected void btnInserirTutorial_Click(object sender, EventArgs e)
        {
            try
            {
                DETutorial tutorial = null;

                string tutorialName = getPostedFileName();

                using (DCCursoDataContext banco = new DCCursoDataContext())
                {
                    tutorial = new DETutorial();
                    tutorial.Titulo = this.txtTitulo.Text;
                    tutorial.Descricao = this.txtDescricao.Text;
                    tutorial.CodigoAssunto = Int32.Parse(this.ddlAssunto.SelectedValue);
                    tutorial.CodigoTipoTutorial = Int32.Parse(this.ddlTipo.SelectedValue);
                    tutorial.Ativo = false;
                    tutorial.Data = DateTime.Today;

                    //Salvando o arquivo
                    fuArquivo.PostedFile.SaveAs(tutorialName);

                    //Salvando apenas o nome do arquivo
                    StringBuilder file = new StringBuilder();
                    file.Append("\\Tutoriais\\");
                    file.Append(this.txtTitulo.Text);
                    file.Append("_");
                    file.Append(System.IO.Path.GetFileName(fuArquivo.PostedFile.FileName));
                    tutorial.URL = file.ToString();

                    banco.DETutorials.InsertOnSubmit(tutorial);

                    banco.SubmitChanges();

                    enviarEmail();


                    Util.showMessage(this, "Tutorial inserido com sucesso.");
                    }
            }
            catch (Exception)
            {
                Util.showMessage(this, "Não foi possível inserir um tutorial. Tente mais tarde ou ligue para 8592-4439");
                }
        }

        private void enviarEmail()
        {
            try
            {
                string body = BuildMessage();

                EmailSender.enviar("Novo tutorial inserido", body, "guto86@gmail.com",false);
            }
            catch (Exception)
            {
            }
        }

        private string BuildMessage()
        {
            StringBuilder message = new StringBuilder();
            message.AppendLine("Mais um tutorial foi cadastrado.<br/>");

            message.Append("Título : ");
            message.AppendLine(this.txtTitulo.Text);

            message.Append("Descrição : ");
            message.AppendLine(this.txtDescricao.Text);

            message.Append("Assunto : ");
            message.AppendLine(this.ddlAssunto.SelectedItem.Text);

            message.Append("Tipo : ");
            message.AppendLine(this.ddlTipo.SelectedItem.Text);

            message.Append("URL : ");
            message.AppendLine(getPostedFileName());

            return message.ToString().Replace(Environment.NewLine, "<br />");
        }

        private string getPostedFileName()
        {
            try
            {
                string fn = this.txtTitulo.Text + "_";
                fn += System.IO.Path.GetFileName(fuArquivo.PostedFile.FileName);
                return Server.MapPath("Tutoriais") + "\\" + fn;
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}